home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 2
/
Gekikoh Dennoh Club Vol. 2 (Japan).7z
/
Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin
/
tools
/
ldbmp08
/
ldbmp08s.lzh
/
LDBMP1.S
< prev
next >
Wrap
Text File
|
1997-06-11
|
3KB
|
161 lines
*****************************************************************
* 2色のBMP *
*****************************************************************
.include doscall.mac
.include iocscall.mac
.include myconst.h
.xdef _Bit1_prt
.xref line_byte
.xref tate
.xref yoko
.xref x_pos
.xref y_pos
.xref gr_addr
.text
.even
*****************************************************************
* 16色表示 *
*****************************************************************
_Bit1_prt:
bsr bit1_prt
rts
*****************************************************************
* 表示 *
*****************************************************************
bit1_prt:
movea.l gr_addr(pc),a1 *グラフィックデータの先頭
move.w x_pos(pc),gram_x *GRAMの表示座標
move.w y_pos(pc),gram_y
clr.w bmp_x *BMPの表示座標(x,y)
clr.w bmp_y
move.w yoko(pc),d0
cmp.w #1024,d0
bcs bit1_prt1
move.w #1024,d0
bit1_prt1:
move.w d0,bmp_xd *bmp_xdot
move.w tate(pc),d0
cmp.w #1024,d0
bcs bit1_prt2
move.w #1024,d0
bit1_prt2:
move.w d0,bmp_yd *bmp_ydot
move.w tate(pc),d0 *グラフィックデータの先頭アドレス
subq.w #1,d0 *(tate-1-bmp_x)*line_byte+gr_addr
sub.w bmp_x(pc),d0
mulu line_byte(pc),d0
add.l gr_addr(pc),d0
movea.l d0,a1
move.w gram_x(pc),d0 *表示先画像アドレス
move.w gram_y(pc),d1 *gram_y*2048+gram_x*2+$c00000
swap.w d1
clr.w d1
ror.l #5,d1
add.w d0,d0
add.w d0,d1
movea.l d1,a2
adda.l #GRAM,a2
bsr bit1_put *表示
rts
bit1_put:
move.w bmp_xd(pc),d0 *横ドット数
move.w bmp_yd(pc),d2 *縦ドット数
subq.w #1,d2 *縦-1
move.w d0,d7 *表示元データの1ライン上へのバイト数
addq.w #7,d7
lsr.w #3,d7
add.w line_byte(pc),d7
move.w #1024,d1 *表示先データの1ライン下までのバイト数
sub.w d0,d1
add.w d1,d1
movea.w d1,a3
move.w d0,d6 *端数を計算
andi.w #$0007,d6
lsr.w #3,d0 *横/8-1
subq.w #1,d0
bit1_put2: *横ドットが偶数の時
move.w d0,d1 *横ループ
bit1_put3:
move.b (a1)+,d3
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
dbra.w d1,bit1_put3
move.w d6,d1 *端数があるか
beq bit1_put5 *ない
subq.w #1,d1
move.b (a1)+,d3
bit1_put4:
moveq.l #0,d4
add.b d3,d3
addx.b d4,d4
move.w d4,(a2)+
dbra.w d1,bit1_put4
bit1_put5:
suba.w d7,a1 *変換元アドレス更新
add.l a3,a2 *変換先アドレス更新
dbra d2,bit1_put2
rts
*****************************************************************
* ワークエリア *
*****************************************************************
gram_x .ds.w 1 *表示する座標(GRAM)
gram_y .ds.w 1
bmp_x .ds.w 1 *表示する座標(BMP)
bmp_y .ds.w 1
bmp_xd .ds.w 1 *表示するドット数
bmp_yd .ds.w 1
.even